import { Test } from '@nestjs/testing';
import { ConfigModule } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { DatabaseModule } from '../src/database/database.module';
import * as path from 'path';

// 全局测试设置
beforeAll(async () => {
  // 设置测试环境变量
  process.env.NODE_ENV = 'test';
  
  // 加载测试环境配置
  const envPath = path.resolve(__dirname, '../.env.test');
  require('dotenv').config({ path: envPath });
});

// 测试数据库清理
afterEach(async () => {
  // 在每个测试后清理数据
  // 这里可以添加清理逻辑
});

// 全局测试结束清理
afterAll(async () => {
  // 关闭数据库连接等清理工作
});

// 创建测试应用的辅助函数
export const createTestingModule = async (imports: any[] = []) => {
  const moduleRef = await Test.createTestingModule({
    imports: [
      ConfigModule.forRoot({
        envFilePath: path.resolve(__dirname, '../.env.test'),
        isGlobal: true,
      }),
      TypeOrmModule.forRoot({
        type: 'sqlite',
        database: ':memory:',
        entities: [__dirname + '/../src/**/*.entity{.ts,.js}'],
        synchronize: true,
        logging: false,
      }),
      ...imports,
    ],
  }).compile();

  return moduleRef;
};